シビックハッカー育成塾.1 2022-10-08
後:
Scrapboxにログインする
このプロジェクトに参加する
タイムスケジュール
18:00-18:15:(Scrapboxに書き込みできない人のフォロー)趣旨説明、自己紹介
19:45-20:00:フリーディスカッション
自己紹介
Koichiro Shiratori.icon
研究者、駆け出しシビックハッカー
当塾は全員フラットな同志の集まり的に運営したいですね!
+1yuiseki.icon
yuiseki.icon
Ryohei.icon
グラミン日本リサーチ&翻訳チーム
シビックハッカー入門者です
furuhashi.icon
駆け出しソフトウェアエンジニア
お久しぶりです
趣旨説明
勉強会の目的
「誰一人取り残さない社会の実現をコードで加速する」というproj-inclusiveのミッションの達成に向けて、関わる人の知識を一緒にアップデートし、共通理解をつくっていく。特に「支援制度検索システムの開発」や「貧困関連データの可視化」に役立てる。 方法
オンラインで月1回程度の勉強会を行う。さしあたって、①社会、②データ・統計、③プログラミングの3つの分野を扱う (原則30分程度ずつ)。一方的に特定の講師役から習うのではなく、教材をベースに、知識を持ち寄る演習形式とする。興味のある分野を事前に予習し、Scrapboxなどに要点・疑問点・質問を書いておき、当日は議論を中心に進める。
参加者
だれでも参加可能。お誘いあわせの上ご参加ください。
①社会分野
※レジュメ:ryohei.icon作成
1980~90年代:EU圏における社会的排除理論の流行
貧困を考えるうえで、自分の生き方は自分で決定するという「自己決定」に基づく「社会参加」の要素が重要視されてきている 社会的排除概念は、自由・権利の「実質性」の観点から社会参加を問うていくことにその新しさがある(「自由の欠如」としての貧困) ⇒重要なのは、最低限度保障するべき「自由の平等」をいかに達成するか 人々に保障されるべき生存のあり方の歴史的変遷
「自由の平等」は何のために重要であるのか?
⇒幸福を追求するため
①幸福のかたちは人それぞれである
②自己決定は個人の尊厳と重大な関係を持つものである
衣食住の「生理的機能」と「社会的機能」
生理的機能:人々が動物として生存するために衣食住に期待する機能
社会的機能:人々が社会的存在として生存するために衣食住に期待する機能
⇒生活困窮者支援においては「生理的機能」ばかりが注目されるが、「社会的機能」を尊重することも大事
子どもの貧困に対する二つのアプローチ
経済的投資アプローチ:子どもを経済成長のために有用な投資対象として考え、子どもの貧困を放置しておくのは経済的な損失であるという立場
目的:経済的リターン
期待される人間モデル:強い個人
社会に対する影響:排除型社会(分断)
目的:子どもの人格・幸福
期待される人間モデル:多様な個人
社会に対する影響:包摂型社会(連帯)
意欲の形成そのものが家庭環境によって大きな格差を生んでおり、意欲もまたその人物の能力の一部として判断されている(意欲格差) 貧困対策の「妥当性」の基準
人々の具体的な生活状態における不利や差別が実際に是正され、実質的自由が拡大したかどうか
上記に基準に適う貧困対策として必要な考え方
⇒これらに共通するのは、支援の対象者を選別しない「普遍主義」である点
貧困問題の解決は、「連帯」を通じた「あってはならない生活状態」への異議申し立てを通じてなされる
連帯:自覚的かつ能動的に形成された人間同士の関係。具体的な要求を掲げて自覚的に行う実践活動の結合体。
近年の日本の貧困研究においては、階級論の視点がほとんどない(人々の「モナド化」) (⇔)イギリスにおいては、多くの人々は自身を「労働者階級」として自認しており、社会運動を通じて資本家階級から権利と自由を獲得してきた(セリーナ・トッド『ザ・ピープル』) 2つの階級の分裂構造
生産手段を所有せず、労働力を資本家に売ることによって生活するプロレタリアート(労働者(被支配)階級) 中間階級(農民・中小企業主・零細自営業者)は没落する 相対的過剰人口:「資本の中位の増殖欲求にとって余分」であるという意味で相対的に過剰な人口。失業者や半失業者(ワーキングプア)として存在。あくまで資本の事情によりこれは規定され、当事者のふるまいには関係しない。
BS:「脱商品化」された保育、教育、医療、住宅サービス
①「自由の平等」の達成に貢献する
②無所有および物象化への対抗が可能
参加者の質問・感想・コメント
社会的排除理論はなぜEU圏で流行したのだろう?yuiseki.icon 個人主義や自由主義が進んでいたから?
米国は別の方向に進んでいる印象はある
経済的に安定した先進国だからというのはありそう
ヨーロッパは有用な新しい理論をよく生み出す印象Koichiro Shiratori.icon
権利の理解なくして社会的排除の理解は不可能Koichiro Shiratori.icon
社会的排除を理解するのは思うほど容易ではない、それを抑止する活動への賛同者はさらに少なくなる?Koichiro Shiratori.icon
選別主義=苦しい人天下一武道会 vs 普遍主義
+1Koichiro Shiratori.icon
実質性を重視するということは法で保証されるだけではダメそうyuiseki.icon
経済的投資アプローチは幅広い層へのアピール力はあるが(例:ギフテッド支援)、リターンがない層へは淡泊になりがちでは、トリクルダウンが見込めず、抜本的な再分配も期待しにくい昨今、彼ら彼女らはどうケアされるべきなのかKoichiro Shiratori.icon 経済的投資アプローチは経済合理性を追求することになるyuiseki.icon 殺伐とした包摂的ではない社会になりそう?
well-beingアプローチも長期的に考えられれば経済合理的なはず
経済性以外の点でそれぞれの得意なことを活かせるようになると、長期的な社会への恩恵があるはず。それをどうやって多くの人にアピールできるか。
確かに。実例、プロトタイプがあれば??Koichiro Shiratori.icon
有用性だけではなく多様性も社会の急変への恩恵があるyuiseki.icon
語り方は1通りでなくてもいいかもしれないKoichiro Shiratori.icon
社会的包摂≠統合(既存の主流社会に統合しさえすればよい、ではない)、は書いてあったが、社会的包摂とは何かははっきりとは書いていない??Koichiro Shiratori.icon
エンパワメントが必要、選択できる権利が必要、とはいえそうだが……Koichiro Shiratori.icon やはり「スーパー30」的な世界観は一理あり→本塾も何か貢献できたらKoichiro Shiratori.icon 社会的排除=排除メカニズムを視野に入れた動画的な概念、社会的包摂=そのメカニズムを作動させないという消極的な面も強調する概念Koichiro Shiratori.icon
+1yuiseki.icon
対症療法的に排除の歯車を1つずつ止めることが必要、proj-inclusiveにおいてもKoichiro Shiratori.icon 階級論的な話とは距離があるKoichiro Shiratori.icon
日本では階級概念が抜け落ちていて連帯できない問題
あえて階級概念を強調する意味はあるのかも
階級論が見落とされているのが事実だとしても、運動論として実効的なのかどうかとは別Koichiro Shiratori.icon
仮想敵を作ろうとしている違和感
例)ビル&メリンダ・ゲイツ財団??
ベーシック・サービスはコモンズ的かも?yuiseki.icon 資本力が開発力になっている
例)VS Code(無料で使えるが背後にMicrosoft)
情報技術に資本主義的な効率主義が組み込まれてしまっているyuiseki.icon
資本の集中を問題だと考慮しているのはクリプトやweb3くらい?
ある種社会主義的な考え方が再興している一方、既に資本主義が行き渡っていて、資本を持つものが圧倒的なパワーを持つ現在の堅牢なシステムがある。そこをどうやったら打ち破っていけるか。 資本主義を諦めると少なくとも一時的には成長スピードは落ちる。技術がどんどん発展、競争が激化する世界の中で、そういう選択をできる国があるか?furuhashi.icon
資本主義を否定するだけでは社会主義の失敗を繰り返すだけ。それらより上のレベルで考えることが大事か
政策のM&A
階層論=現象を記述するにとどまる、階級論=貧困を生むメカニズムを含んだ議論?Koichiro Shiratori.icon
②データ分野
※レジュメ:yuiseki.icon
第3章 確率
サイコロ投げ
コイン投げ
3.1.2 確率の定義
事象の確率とはランダム過程が無限に観察されたとするときに事象が起きる割合を意味する
観測数を増やすと 1 つの事象が起きる比率 pˆn はその事象の確率に収束する
2 つの事象が同時に起きることがなければ排反 (disjoint) あるいは互いに排反 (mutually exclusive) という
yuiseki.icon「コインが表になる」と「コインが裏になる」という事象が同時に起こることはない=排反
A1 と A2 を 2 つの排反事象とすると, これらの片方が起きる確率は次のようになる :
P({A1 or A2}) = P(A1) + P(A2)
$ P({A1 or A2}) = P(A1) + P(A2)
互いに排反な事象 A1, ..., Ak について, これらの 1 つが起きる確率は
P(A1) + P(A2) + · · · + P(Ak)
$ P(A1) + P(A2) + · · · + P(Ak)
で与えられる.
yuiseki.icon「コインが表になる確率」+「コインが裏になる確率」=1.00
現実には排反ではない事象を扱うことのほうが多い
3.1.4 互いに排反とは限らない事象の確率
2 つの事象 A と事象 B が互いに排反, あるいは排反でない場合, 少なくとも 1 つの事象が起きる確率は
P({A or B}) = P(A) + P(B) − P({A and B})
$ P({A or B}) = P(A) + P(B) − P({A and B})
となる. ここで P({A and B)} は両方の事象が同時に起きる確率である.
確率分布 (probability distribution) とはすべての排反事象とその確率の表を意味する.
確率分布のルール
確率分布とは確率的結果と次の 3 ルールを満たす確率の表現 (リスト) である.
1. 結果の事象は排反となる.
2. 各々の確率は 0 と 1 の間にある.
3. 確率の和は 1 となる.
サイコロ投げは集合 {1, 2, 3, 4, 5, 6} 上に値をとる. 可能なすべての事象の集合を標本空間 (sample space, S) と呼ぶ. なお標本空間を利用して起きない事象も表現しておく. ここで集合 D = {2,3} をサイコロ投げの結果 2 あるいは 3 の事象を表そう. このとき D の補集合 (complement) は集合 D でない 標本空間の集合を表し、集合 Dc = {1, 4, 5, 6} と書く. すなわち Dc は D に含まれないすべての要素からなる集合を意味する.
事象 A の補集合を Ac で表し, Ac は集合 A に属さないすべての事象を表す.
事象 A と集合 Ac は数理的に次の関係がある.
P(A) + P(Ac) = 1, i.e. P(A) = 1 − P(Ac) .
$ P(A) + P(A^c) = 1, i.e. P(A) = 1 − P(A^c)
あるランダム過程の結果が他のランダム過程の結果に何の有益な情報をもたらさないこと
コイントスは前の結果が次の結果に一切影響しないので独立
2つのコイントスをする場合も、コインAの結果はコインBに影響しないので独立
日経平均株価と個別株は独立ではない
A と B を 2 つの異なる独立な過程を表す事象とする. このとき事象 A と B が同次に起きる確率はそれぞれの確率の積で与えられる:
P({A and B}) = P(A) × P(B) .
$ P({A and B}) = P(A) × P(B)
同様に, もし k 個の独立な過程から得られる k 個の事象を A1, ..., Ak とすると, すべてが起きる確率は各確率の積で与えられ,
P(A1) × P(A2) × · · · × P(Ak) .
$ P(A1) × P(A2) × · · · × P(Ak)
2つのコイントスをする場合
「両方表になる確率」
=「コインAが表になる確率」0.5 × 「コインBが表になる確率」0.5
0.25
3.2.1 分割表に関する確率
周辺確率と同時確率
1 変数に基づく確率は周辺確率 (marginal probability) である.
2 変数, 多変数, 複数のランダム過程に対する確率は同時確率 (joint probability) である.
3.2.3 条件付き確率の定義
条件付き確率 (conditional probability) 条件 B の下での事象 A の条件付き確率は以下で与えられる:
$ P(A|B) =\frac{P({A and B})}{P(B)}
3.2.4 ボストンでの天然痘の大流行, 1721
正式な記号を使ってランダムに選んだ患者が接種せずに天然痘により死亡する確率を求めなさい
$ P({死亡}|{非接種}) = \frac{P({死亡かつ非接種})}{P(非接種)} = \frac{0.1356}{0.9608} = 0.1411
一般の乗法ルール (General Multiplication Rule)
集合 A および B を事象とする. このとき
P({A and B}) = P(A|B) × P(B) .
$ P({A and B}) = P(A|B) × P(B)
ここで A を関心のある事象, B を条件とすると分かりやすいだろう.
一般乗法ルールは単に条件付確率の式を表現しなおしたものである.
条件付き確率の和
集合 A1, ..., Ak がある変数, あるいはランダム過程の排反な事象を表すとする. さらに B を別の変数、あるいはランダム過程とするとき:
P(A1|B) + · · · + P(Ak|B) = 1 .
$ P(A1|B) + · · · + P(Ak|B) = 1
補集合の事象に対するルールは事象と補事象が同じ情報の下で成立して
P(A|B) = 1 − P(Ac|B) .
$ P(A|B) = 1 − P(A^c|B)
3.2.6 条件付き確率と独立性
3.2.7 樹形図
ある母集団から観察値をサンプリングするとき, サンプリング可能な個体や事例は全体に比較してごく 少ない割合のことが多い. しかしときには母集団に比較して標本数が多く, 例えば母集団の 10% 以上 になることもある
小さな母集団から非復元 (without replacement) でサンプリングするとき, 観測系列の間の独立性は存 在しない. 例題 3.48 では 2 番目に当たらない確率は最初に当たらない事象に条件付けられている. 例 題 3.50 では教授は学生を選ぶとき復元抽出 (with replacement) を行っていた. 既にどの学生を当てた か否かに関わらず, 繰り返しサンプリングしている.
標本数が母集団に比べて小さい (10%以下) なら, 観測系列は非復元であってもほぼ独立となる.
ランダム過程は確率変数 (random variable) と呼ばれているものと同じ意味であり, 統計的モデル分 析を行うのに有益である. この確率モデルを用いると現実の事象を理解し予測するために数理的に統 計的原理を利用することが可能となる
確率変数 (random variable)
数値をとるランダム過程, 確率的に変動する値をとる変数
確率変数 X が数値 x1, ..., xk をとり, その確率が P(X = x1), ..., P(X = xk) なら, X の期待値 は取りうる値を確率で乗じて和をとり,
E(X) = x1 × P(X = x1) + · · · + xk × P(X = xk) = > ∑ > k > i=1 > xiP(X = xi) .
しばしばギリシャ文字ミュー µ を期待値 E(X) の記号として用いる.
3.4.2 確率変数とばらつき
一般の分散公式
確率変数 X が値 x1, ..., xk を確率 P(X = x1), ..., P(X = xk) でとるとき, 期待値は µ = E(X), X の分散は V ar(X), あるいは記号シグマ二乗 (σ 2 ) と書き,
σ 2 = (x1 − µ) 2 × P(X = x1) + · · · + (xk − µ) 2 × P(X = xk) = = ∑ k j=1 (xj − µ) 2P(X = xj )
で与えられる. X の標準偏差 (standard deviation) はシグマ σ で表現されるが, 分散の平方根 (ルート) である. 確率変数の線形結合とその平均
X と Y を確率変数とすると, 確率変数の線形結合は
aX + bY
で与えられる. ここで a と b は固定された定数とする. 確率変数の線形結合の期待値を計算する にはそれぞれの確率変数に期待値を代入すると,
a × E(X) + b × E(Y )
となるが, ここで期待値とは平均の意味であり E(X) = µX である. 3.4.4 確率変数の線形和のばらつき
確率変数の線形結合の変動性
確率変数の線形結合の分散は係数の二乗を計算, 確率変数の分散を代入し, 次の公式を利用する
V ar(aX + bY ) = a 2 × V ar(X) + b 2 × V ar(Y ) .
この式は確率変数が互いに独立である限りにおいてのみ正しい. 確率変数の線形結合の標準偏差は分散の平方根をとればよい.
滑らかな曲線になる
参加者の質問・感想・コメント
クリアな定義Koichiro Shiratori.icon
事象の確率とはランダム過程が無限に観察されたとするときに事象が起きる割合を意味する
2 つの事象が同時に起きることがなければ排反 (disjoint) あるいは互いに排反 (mutually exclusive) という
確率分布 (probability distribution) とはすべての排反事象とその確率の表を意味する
確率分布とは確率的結果と次の 3 ルールを満たす確率の表現 (リスト) である.
1. 結果の事象は排反となる.
2. 各々の確率は 0 と 1 の間にある.
3. 確率の和は 1 となる.
条件付き確率の説明も分かりやすい!Koichiro Shiratori.icon
確率変数 (random variable)=ランダム過程Koichiro Shiratori.icon
数値をとるランダム過程, 確率的に変動する値をとる変数
医療分野の事例が多い
これが第一章でも良い気がしたyuiseki.icon
これが第一章だとショボンとしてしまいそう
第一章が現代統計学の最前線を扱っているのでスリリングな本になっている
③プログラミング分野
※レジュメ:Koichiro Shiratori.icon
「なぜ言語設計者はこの文法を作ったのか」-帯より-
はじめに
世の中にはたくさんのプログラミング言語があり、読むべきドキュメントもたくさんあるが、自分の時間は有限
特定の言語やツールなどの知識は、変化の速度が速いために、すぐに陳腐化する
意識して「変化しにくい知識」を学ばないと、学んだことがどんどん価値を失ってしまう 学び方には3つの柱がある、この学び方自体が重要
複数の言語を比較する
何がその言語特有で、何がいくつもの言語で共通のことなのか
言語の発展の歴史を追う
どう生まれ、どう変化し、どう滅んだのかを学ぶことで、「なぜこうなっているの?」というよくある疑問が解決することが多い
自分で言語を作る、あるいは「自分ならどう作るだろう」と考えることで、言語設計者の意図を理解しやすくなる
※サポートサイトからサンプルコードのダウンロード可
第1章 言語を深く効率的に学ぶには
言語を深く効率的に学ぶために、「比較から学ぶ」と「歴史から学ぶ」という方法について具体例を挙げて説明する
1.1 比較から学ぶ
決め事は言語によって異なる
プログラミング言語の約束事とは、「今のところこういう約束にしておいたほうが楽だと思うので、そうしましょう」ということにすぎない
C言語:「0が真(true)で、それ以外が偽(false)」
Ruby:「0が真」「falseとnilが偽、それ以外はたとえ0であっても真」
→これらを知ると、「他の言語で真偽がどう定義されているか知りたい」という明確な目的が生まれ、学習効率が上がる
Javaは真偽値の型を持っていて、条件式はその型でなければならない 1.2 歴史から学ぶ
言語設計者の意図を理解する
ある機能が「なぜ必要なのか」という疑問を持つことは多い
設計者がどんな問題を解決したくてその言語を作ったのか、その言語がどういう流れで生まれてきたのかを知ることでわかる
どの言語を学ぶべきかは誰にもわからない
未来は誰にもわからないので、メジャーな言語を学んだり、伸びそうな分野の言語を学ぼうとしても無意味
個別の言語の知識は、5年後10年後も役に立つかどうか、誰にもわからない
いくつもの言語を比較したり、言語の歴史や理由を調べたりすることで、言語が変わっても通用するような理解力を養う必要がある
1.3 まとめ
本書では、特定の言語の知識ではない、より普遍的な知識を学ぶことを目指している
そのために、「比較から学ぶ」と「歴史から学ぶ」の2つのテクニックを使う
第2章 プログラミング言語を俯瞰する
プログラミング言語自体がなぜ生まれたのか、歴史を追って学ぶ
2.1 プログラミング言語誕生の歴史
古いものと新しいものを比較することで理解が深まる
今では「当たり前」なことも知らなかった昔の人の視点で物事を考えることは、新しく学ぶ人にとって有益
ケーブルをつなぐ
1946年:ENIACが開発される(17,468本の真空管をつかった、幅が24メートルもある巨大なコンピュータ) 当時のプログラミングとは、コンピュータのあちこちの端子をケーブルでつなぎかえること
1949年:EDSACが開発される(紙テープに穴をあけてデータを表現し、読み込ませるしくみのコンピュータ) プログラムの変更はかなり楽になったが、紙テープに空いた穴を読み取るのは人間には困難
1954年:FORTRANの開発(数式を機械言語へ翻訳できるプログラミング言語) 設計者であるJohn Backusは「私の成果の大部分は怠惰から来ている」「私はプログラムを書くのが好きではなかった、だからプログラムを書くのが楽になるようなシステムを作ったのだ」と述べた この時代には、効率の良いプログラムは、人が機械語を書くことでしか作ることができないと思われていた
2.2 プログラミング言語の生まれた目的
プログラムは楽をするために書くもの
楽≠手抜き、手抜きをして後で苦しくなるのでは楽をしたとは言えない
無精-プログラマの三大美徳の一つ
最も必要な素質「無精」=「楽をする」
労力を省くために書いたプログラムは他人に使われる
そのプログラムに関する質問にいちいち答える労力を省くためにドキュメントを書くようになる
※短気=プログラムが遅いことを許せないこと、傲慢=間違いを放置することを許せないこと
言語により異なる「楽さ」の意味
なぜ世界にはこんなにいろいろな種類の言語があるのか?
→何を「楽」だと考えるかが人によって異なる
何を楽にしたい
C++はコードの高速さをとても重視している言語→言語仕様は複雑に Schemeは言語仕様を把握することの楽さを重視している言語→構文が括弧だらけに Pythonは他人が書いたコードを読むのが楽になることを重視している言語→速くもないし、言語仕様がコンパクトなわけでもない どんなプログラムを書くのを楽にしたいのか
正しい設計は、使う人が何も目的としているかによって変わる
いろいろな設計の言語があるのは、人間にいろいろな目的があるから
C++がPythonより読みにくいと言ったり、PythonがC++より遅いと言ったりしても、あまり有益な議論にはならない
2.3 まとめ
言語は道具
ある言語が自分の目的に適しているのかどうかは、その言語を使うことで自分がどれだけの生産性を発揮できるかでわかる
流行っているかや、他人がその言語を使ってどの程度の生産性を発揮しているかではわからない
適材適所でよい道具を選んで使うべき
参加者の質問・感想・コメント
比較・歴史というのは人文・社会科学的な知識の習得でも重要ですねRyohei.icon
プログラミング言語にも親子関係があるらしい!Koichiro Shiratori.icon
FPGAが登場したことで「ケーブルをつなぐ」に戻っているかもyuiseki.icon 書き換え可能電子回路
チップ1つが真空管の集まりで、プログラミングで電子回路をつなぎかえられる!→これが一番計算が速いKoichiro Shiratori.icon
おおーこれは読み応えがありそうですね!!yuiseki.icon
こちらは資本主義とテクノロジーの関係性についても考察されている
日程
2022-11-12 18:00-20:00
担当
1-3章Koichiro Shiratori.icon
4-5章yuiseki.icon
3-6章Ryohei.icon
野望
開発:2022-11-12 13:00-18:00
TypescriptとReact
参考文献まとめるyuiseki.icon